package com.deco.service.fix;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.deco.domain.vo.fix.FixGeneralDspVo;
import com.deco.domain.vo.fix.FixGeneralVo;
import com.deco.logic.fix.FixGeneralLogic;
import com.deco.service.CommonService;
import com.free.common.vo.PageResponseVo;
import com.free.common.vo.PageSearchVo;
import com.free.common.vo.ResultModel;

@Service
public class FixGeneralService  extends CommonService{
	   /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/
    
    @Autowired
    private FixGeneralLogic fixGeneralLogic;
    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

    
    public FixGeneralVo getFixGeneral(int id){
    	return fixGeneralLogic.getFixGeneral(id);
    }
    
    public ResultModel save(FixGeneralVo fixGeneralVo){
		Date current = new Date();
		int currentUserId = getCurrentUserId();
    	if(fixGeneralVo.getId() == null || fixGeneralVo.getId() == 0L){
    		fixGeneralVo.setUpdateBy(currentUserId);
    		fixGeneralVo.setUpdateTime(current);
    		fixGeneralVo.setCreateBy(currentUserId);
    		fixGeneralVo.setCreateTime(current);
    		fixGeneralLogic.create(fixGeneralVo);
    		return ResultModel.success();
    	}
    	else{
    		fixGeneralVo.setUpdateBy(currentUserId);
    		fixGeneralVo.setUpdateTime(current);
    	   	int res = fixGeneralLogic.update(fixGeneralVo);
    	   	if(res > 0){
				return ResultModel.success(fixGeneralVo);
			}else{
				return ResultModel.failure(fixGeneralVo);
			}
    	}
    }

	public ResultModel delete(int id) {
		fixGeneralLogic.delete(id);
	  	return ResultModel.success();
	}

	public ResultModel batchDelete(Integer[] ids){
    	if(ids == null || ids.length == 0){
    		return ResultModel.success();
		}
    	int res = fixGeneralLogic.batchDelete(ids);
    	if(res > 0){
    		return ResultModel.success();
		}
		return ResultModel.failure();
	}

	public ResultModel isNameValid(Integer id, String typeName){
		FixGeneralVo condition = new FixGeneralVo();
    	condition.setTypeName(typeName);
		List<FixGeneralVo> res = fixGeneralLogic.getByVo(condition);
		if(res == null || res.size() == 0){
			return ResultModel.success();
		}else{
			if(res.size() > 1){
				return ResultModel.failure();
			}
			FixGeneralVo exist = res.get(0);
			if(id != null && id !=0){
				if(exist.getId() == id){
					return ResultModel.success();
				}
			}
			return ResultModel.failure();
		}
	}
	

    public PageResponseVo<FixGeneralDspVo> pageInfo(PageSearchVo<FixGeneralDspVo> condition){
    	return fixGeneralLogic.getPageInfo(condition);
	}

	public List<FixGeneralVo> getList(FixGeneralVo element) {
		return fixGeneralLogic.getByVo(element);
	}
	public List<FixGeneralVo> fixtypeForMenu(){
    	return fixGeneralLogic.fixtypeForMenu();
	}

	public FixGeneralVo selectNextById(Integer fixid){
		return fixGeneralLogic.selectNextById(fixid);
	}

	public FixGeneralVo selectPrevById(Integer fixid){
		return fixGeneralLogic.selectPrevById(fixid);
	}
    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/

}
